<?php

class Helper{
	
	const DATE_FORMAT_INSERT = 1;
	const DATE_FORMAT_RENDER_L = 2;
	const DATE_FORMAT_RENDER_S = 3;
		
	static		$_instance;
		
	private function __clone(){ } 
 
	public static function getInstance()
	{ 
		if (!(self::$_instance instanceof self))
		{ 
         	self::$_instance=new self(); 
      	} 
		return self::$_instance; 
	}
	
	/* ********************************************************** */
	// Funcion creada unicamente para la etapa de desarrollo y es 
	// utilizada para debugear. Imprime el output a un archivo.
	// Ejemplo: Para imprimir un array.
	// Helper::output2file(print_r(MiArray,true));
	/* ********************************************************** */
	static public function output2file($sData){
		$fp = fopen("output.html","a");
		$sOutput = $sData . "<br />" . PHP_EOL;
		$sOutput.= print_r(error_get_last(),true) . "<br />" . PHP_EOL;
		fwrite($fp, $sOutput);
		fclose($fp); 
	}
	/* ********************************************************** */

	static public function getUser($iOp)
	{
		session_start();
		$aUser=$_SESSION['auser'][0];
		switch($iOp)
		{
			case 1:
				$mReturn=$aUser[Usuario::COL_ID];
			break;
			default:
				$mReturn=$aUser;
			break;
		}
		return $mReturn;
	}
		
	static public function dateFormat($mDate,$iOp)
	{
		if(!empty($mDate)){
			switch($iOp)
			{
				case self::DATE_FORMAT_INSERT:
					$sNfecha=implode("-", array_reverse(explode("/",substr($mDate,0,10) )));
				break;
				case self::DATE_FORMAT_RENDER_S:
					$sNfecha=implode("/", array_reverse(explode("-",substr($mDate,0,10) )));
				break;					
				case self::DATE_FORMAT_RENDER_L:
					$sNfecha=explode("-",substr($mDate,0,10));
					switch ($sNfecha[1]){
						case 1: $sMes = "Enero"; break;
						case 2: $sMes = "Febrero"; break;
						case 3: $sMes = "Marzo"; break;
						case 4: $sMes = "Abril"; break;
						case 5: $sMes = "Mayo"; break;
						case 6: $sMes = "Junio"; break;
						case 7: $sMes = "Julio"; break;
						case 8: $sMes = "Agosto"; break;
						case 9: $sMes = "Septiembre"; break;
						case 10: $sMes = "Octubre"; break;
						case 11: $sMes = "Noviembre"; break;
						case 12: $sMes = "Diciembre"; break;
					}
					$sNfecha = $sNfecha[2].' de '.$sMes.' de '.$sNfecha[0];
			}
			return $sNfecha;
		}
		else{
			return null;
		}
	}
		
	static public function redirect($sUrl)
	{
		@header("Location: ".$sUrl);
	}	

	static public function renderView($sPath,$sView)
	{
		require_once "../views/$sPath/$sView.php";
	}
	
	static public function arrayFile($aFile)
	{
		foreach($aFile as $iK=>$mFiles)
		{
			foreach($mFiles as $iW=>$aW)
			{
				$aNFile[$iW][$iK]=$aW;
			}
		}
		return $aNFile;		
	}

	static public function usuId2Array($iReq)
	{
		Usuario::getInstance();
		$aUser[]=array('name'=>Usuario::COL_ID,'value'=>"$iReq");			
		$aUsers=Usuario::getDatos($aUser);
		return $aUsers[0][Usuario::COL_NOMBRE]; 			
	}
		
	static public function hitoId2Name($iHi)
	{
		Hito::getInstance();
		$aHit=Hito::getDatos($iHi);	
		return $aHit[0][Hito::COL_DESCRIPCION];	
	}

	static public function Json2Array($aDatos)
	{
		foreach($aDatos['dataFormulario'] as $iK=>$mDat) 
			if($mDat['value']!='')$aForm[$mDat['name']] = $mDat['value'];	
		
		return $aForm;
	}
		
	static public function arrayPhp2Js($aDatos)
	{
		if(empty($aDatos))
		{
			return '[]';
		}
		else
		{
			$sJsArray="[";
			foreach($aDatos as $iK=>$mDat){
				$sJsArray.="['".implode("','", $mDat)."'],";
			}
			$sJsArray=substr($sJsArray,0,-1);
			$sJsArray.="]"; 
			return $sJsArray;
		}
	}

	static public function consoleLog($str)
	{
		echo '<script>console.log("'.$str.'");</script>';	
	}
	
	static public function formatCurrency($valor, $unidad)
	{
		switch($unidad)
		{
			case 'peso':
				return '$'.number_format($valor, '0', ',', '.');
				break;
			case 'uf':
				break;
			default:
				break;
		}
	}
	
	static public function myUserId()
	{
		@session_start();
		print_r($_SESSION['auser']);
		return $_SESSION['auser']->{'IdUsuario'};
	}	

}

?>